package bean.dao;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;

import Entities.HojaDeRuta;
import Entities.Sucursal;

public class HojaDeRutaDAO {

	private static HojaDeRutaDAO instancia;
	private static SessionFactory sf;
	
	public static HojaDeRutaDAO getInstancia(){
		if(instancia == null){
			sf = (HibernateDAO.getInstancia().getSession().getSessionFactory());
			instancia = new HojaDeRutaDAO();
		} 
		return instancia;
	}

	public HojaDeRuta get(Sucursal origen, Sucursal destino) {
		// TODO Auto-generated method stub
		return null;
	}

	public void altaHojaDeRuta(int sucorigen, int sucdestino, HojaDeRuta hoja) {	
		
		Sucursal origen = (Sucursal)SucursalDAO.getInstancia().getSucursal(sucorigen);
		hoja.setSucursalOrigen(origen);
		Sucursal destino = (Sucursal)SucursalDAO.getInstancia().getSucursal(sucdestino);
		hoja.setSucursalDestino(destino);
				
		Session s = HibernateDAO.getInstancia().getSession();
		
		@SuppressWarnings("unchecked")
		List<HojaDeRuta> lista =
			s.createQuery("from HojaDeRuta where sucursalOrigen=:idori or sucursalDestino=:iddest ")
				.setParameter("idori", sucorigen)
				.setParameter("iddest",sucdestino)
				.list();	
		
		Transaction t = s.beginTransaction();
		s.save(hoja);
		
		for(HojaDeRuta old : lista) {
			old.setVigente(false);
			s.save(old);
		}
		
		t.commit();
	}

	public List<HojaDeRuta> getHojasDeRuta(int id) {
		Session s = HibernateDAO.getInstancia().getSession();
		@SuppressWarnings("unchecked")
		List<HojaDeRuta> lista = s.createQuery("from HojaDeRuta where sucursalOrigen=:idori or sucursalDestino=:iddest ").setParameter("idori", id).setParameter("iddest",id).list();	
		return lista;
	}
	
	public static void setSf(SessionFactory sf) {
		HojaDeRutaDAO.sf = sf;
	}

	public static SessionFactory getSf() {
		return sf;
	}
	

}
